Programmable logic devices (PLDs), such as field-programmable gate arrays (FPGAs), are user-programmable integrated circuits that can be programmed to implement user-defined logic circuits. In a typical FPGA architecture, an array of configurable logic blocks (CLBs) and a programmable interconnect structure are surrounded by a ring of programmable input/output blocks (IOBs). Configurable logic blocks can also be referred to using other names such as, for example, a logic array block (LAB) or a logic module.
In one SRAM-based FPGA, each of the CLBs, each of the IOBs, and the programmable interconnect structure includes configuration memory cells, the contents of which determine how the CLB, the programmable interconnect structure, or the IOB is configured. To realize a user-defined circuit, configuration data is loaded into the configuration memory cells such that the CLBs and IOBs are configured to realize particular circuit components used in the user-defined circuit. Configuration data is also loaded into the configuration memory cells of the programmable interconnect structure such that the programmable interconnect structure connects the various configured CLBs and IOBs in a desired manner to realize the user-defined circuit.
In addition to CLBs and IOBs, other more specialized circuits may be provided on an FPGA integrated circuit for use in user-specific designs. Examples of such other circuits include, but are not limited to, block random access memory (BRAM), multiplier circuits, processors, clock management circuitry, and high-speed transceivers.
The cost of an integrated circuit die is directly related to its size. If all other cost factors involved in the manufacture of an integrated circuit are equal, then making the integrated circuit larger will make the integrated circuit more expensive to produce. It is therefore generally an objective in FPGA integrated circuit design to lay out the circuitry of the CLBs, IOBs, and programmable interconnect using as little integrated circuit die surface area as is realistically possible. Because the layout of an integrated circuit die includes considerable engineering effort and therefore cost, FPGA integrated circuits are often laid out as a set of repeatable “tiles”. The various tiles are laid out adjacent to one another such that adjacent tiles couple together at their boundaries to form the larger FPGA integrated circuit. The particular way the tiles are laid out across the surface of the FPGA die is called a floorplan.
FIG. 1 (Prior Art) is a simplified diagram showing one way that various CLB, IOB, BRAM/multiplier tiles could be laid out to form an FPGA integrated circuit 1. The CLB tiles 2 are laid out in column-like two-dimensional arrays. In this example, each CLB tile includes a portion of the configurable interconnect structure such that the entire interconnect structure is formed by the various portions of the many CLBs when the CLB tiles are placed together on the FPGA. There are also BRAM/multiplier tiles 3. The BRAM/multiplier tiles, which are not required in as great of numbers as the CLB tiles, are laid out in columns of uniform width. For more information on the various types of tiles shown in FIG. 1, see the data sheet for the Virtex II Pro FPGA. The data sheet is available on-line in PDF form on the Xilinx, Inc. web site, www.Xilinx.com.
In order to provide a large amount of input/output circuitry for interfacing the FPGA 1 to external logic, IOB tiles 6 are provided along each of the four sides (top, bottom, left, right) of the die. In this particular design, an input/output interconnect tile (IOI tile) is used to couple each pair of IOB tiles to a CLB tile in the central core of the die. One such IOI tile is therefore disposed between each pair of IOB tiles and the central core. Reference numeral 7 points to one such IOI tile. IOI tile 7 is disposed between the two IOB tiles to its right and the CLB tile to its left.
FIG. 2 (Prior Art) is a simplified perspective view of an IOB tile 6 of the die of FIG. 1. In this example, input/output circuitry 8 within the IOB tile is connected by conductive traces 9 to both a bond pad 10 as well as to a solder bump 11. A solder bump is sometimes called a bond bump or a microbump. The solder bump may be formed of metal in the upper metalization layers above the IOB tile itself or may be disposed outside the lateral boundary of the IOB tile as illustrated in FIG. 2. The bond pad 10 is provided so that the FPGA die can be wire bonded to an integrated circuit package. The solder bump 11 is provided so that the FPGA die can be packaged in flip-chip fashion. Providing both bond pads and solder bumps for the IOB tile makes the resulting FPGA die more versatile in that the same type die layout can used in wire bond packages and in flip-chip packages.
Providing an IOB tile with both a bond bump and a wire bond pad, however, increases total capacitive loading on input/output trace 9. This additional capacitive loading is undesirable. In addition to an undesirable increase in capacitive loading, providing both a bond bump and a wire bond pad also has the drawback of consuming additional die surface area. Wire bond pads cannot generally be disposed directly over areas of circuitry. During wire bonding, physical forces are placed on the bond pad by an external wire bonding device. The physical forces imposed on the wire bond pad may damage any circuitry that might be disposed under the wire bond pad. Consequently, providing a wire bond pad for an IOB tile generally involves consuming die surface area in addition to the amount of die surface area occupied by the circuitry of the IOB tile. If the bond pad could be eliminated from the FPGA design, then the amount of die area required to realize the IOB tiles could be reduced.
For additional information on a tile FPGA floorplan and on the general operation of an FPGA integrated circuit, see: 1) U.S. Pat. No. 5,914,616 by Young et al.; 2) the Advance Product Specification entitled “Virtex-II Pro Platform FPGAs: Functional Description”, Sep. 27, 2002; 3) Published U.S. Patent Application US2001/0030555A1 by Witting et al.; and 4) U.S. Pat. No. 6,396,302, by New et al. (the subject matter of these four documents is incorporated herein by reference).
Although the tile layout technique illustrated in FIG. 1 has significant efficiencies and benefits, the tile layout technique also has certain drawbacks. For example, the four corner regions 12–15 of the die cannot accommodate the same IOB tile and IOB tile structure as is present elsewhere along the periphery of the die. As set forth above, the architecture of FIG. 3 requires that an IOI tile be disposed between a pair of IOB tiles on the die edge and a corresponding CLB tile on the edge of the central core of the die. As can be seen in FIG. 3, the CLB tile nearest to a corner is bounded by an IOI tile, and yet additional die area in the corner region. If an additional IOI tile and a corresponding pair of IOB tiles were to be placed in the available space in the corner region, then there would be no CLB tile edge to which the added IOI tile could be abutted. Accordingly, the IOI tile mechanism for interfacing IOB tiles to the central core cannot easily be used in the four corner areas of the die.
In addition to the limited utility of corner regions 12–15, the tiles and layout technique of FIG. 1 also results in areas above and below the columns of BRAM/multiplier tiles having limited utility. As set forth above, the repeatable IOB tiles interface to CLB tiles through intervening IOI tiles. In the areas 16–27 above and below the BRAM/multiplier tile columns, there are no CLB tiles to interface to. IOB tiles and IOI tiles are therefore not placed in these areas. The result is an area along the periphery of the die that either is wasted or must have a tile that differs in structure from the IOB and interconnect and CLB tile structure used elsewhere on the periphery of the die.
FIG. 3 (Prior Art) is a diagram that shows one way that these corner regions 12–15 and areas 16–27 above and below the BRAM/multiplier tile columns are used in one conventional FPGA. In the example of FIG. 3, clock management circuitry is fitted into the areas 16, 21, 22 and 27 above and below the leftmost and rightmost columns of BRAM/multiplier tiles. Although these areas 16, 21, 22 and 27 are used, it is not necessarily the case that the amount of circuitry required by the clock management circuitry is the precise amount of area of regions 16–21, 22 and 27. A clock management circuit may, for example, occupy a smaller area than is available in one of these areas such that some of the area is left unused in the final die layout and is wasted. Alternatively, the amount of area that is desired for the functionality of the clock management circuit exceeds the amount of area that happens to have been left above and below the BRAM/multiplier tiles. In such case, some clock management functionality that is desired cannot be provided in the ultimate FPGA.
There is also an amount of area left above and below the center four columns of BRAM/multiplier tiles. These areas are designated in FIG. 1 by reference numbers 17–20 and 23–26. These areas are, in one specific design, used to provide high speed transceivers. Each transceiver, however, requires more die area than is left in one of the areas. Accordingly, the available area is expanded in the horizontal dimension one pair of IOB tile spaces to the left and one pair of IOB tile spaces to the right. The result is T-shaped transceiver tiles 28–35 as illustrated FIG. 3. Although this solution provides the extra space required to implement the desired transceiver circuitry, expanding the available die area by four IOB tile spaces might not provide the exact additional amount of extra space desired. More space than is desired may be provided resulting in wasted die area, or too little space may be provided resulting in less transceiver functionality being provided than is desired. The resulting T-shaped region puts a greater burden on design and layout to conform to the odd shaped hole which adds to development costs.
There is also an amount of area left in the corner areas 12–15 of the die. These areas are, in one specific case, used to accommodate other miscellaneous circuitry. This miscellaneous circuitry may, for example, include configuration logic, encryption/decryption logic, global clock driver circuitry, a performance monitor, and boundary scan circuitry. Again, as was the case with the areas above and below the columns of BRAM/multiplier tiles, these areas may provide more space or less space than is desired for the miscellaneous circuitry. The result is either wasted die area and/or less functionality than is desired. This circuitry must be divided between the four corners which can adversely impact performance, required area, and design/layout effort.
In addition to the problems set forth above, there is also another problem with the tile layout technique of FIG. 1. It is often the case that a particular circuit is most efficiently laid out in a particular shape. That shape is often not a square. In the case of the SRAM-based CLB design used in the FPGA integrated circuit of FIG. 1, for example, the CLB circuitry is most efficiently laid out as a rectangle. Because there are a great many CLB tiles in the FPGA integrated circuit of FIG. 1, the layout of the CLB tiles is optimized such that the size of the overall integrated circuit is reduced. Consequently, the CLB tile has a rectangular shape. Using this rectangular CLB tile shape, however, gives rise to a layout inefficiency.
FIG. 4 (Prior Art) is a diagram that illustrates this layout inefficiency. The tiles within dashed line 36 represent tiles disposed along the leftmost side of FPGA integrated circuit 1. The tiles include a CLB tile 37, two IOB tiles 38 and 39, and an associated interconnection tile 40 disposed between the CLB tile and the IOB tiles. The IOB tiles are made of such a height that the combined height of the two stacked IOB tiles 38 and 39 is the same as the height 41 of CLB tile 37.
When the IOB tile is reoriented ninety degrees so that a pair of IOB tiles 42 and 43 is disposed along the upper side of FPGA die 1, however, the IOB tiles 42 and 43 do not have a combined width that is the same as the width of a CLB tile. The CLB tile is wider than it is tall. The combined width 44 of the vertically oriented IOB tiles 42 and 43 is therefore less than the width 45 of the associated CLB tile 46. Moreover, the IOI tile 47 disposed between CLB tile 46 and the two IOB tiles 42 and 43 is also reoriented ninety degrees and therefore also has a width 44 that is narrower than the width of the CLB tile. In one design, the same IOB tile layout is maintained for simplicity purposes and to provide identical performance on all four sides of the FPGA die. As a result, there is an extra amount of wasted space 48 associated with each CLB tile disposed along the top and bottom sides of FPGA die 1.
A solution is desired that minimizes and/or eliminates the above-described problems.